function [a0,a,b] = FourierSeries(x,y,n)
    % x,y 确定一个函数
    % n 傅里叶级数展开次数
    
    a = [];
    b = [];
    c = [];
    s = [];
    T = (max(x)-min(x));
    w = 2*pi/T; % 转速，必须要有（保相证第一级cos sin的周期与被拟合函数周期等）
    
    % 计算傅里叶级数常数项
    a0 = 2*trapz(x,y)/T;
    for i=1:n
        c(:,i) = diag(y'*cos(i*w*x)); % 被拟合的数据
        a(i) = 2*trapz(x,c(:,i))/T; % 求积分
        s(:,i) = diag(y'*sin(i*w*x)); % 被拟合的数据
        b(i) = 2*trapz(x,s(:,i))/T; % 求积分
    end
%     a = [-2	1.2	-0.9 1.04 -0.6]*10;
    % 计算展开项，并累加
    t = x;
    M = zeros(size(t));
    for i=1:n
       M = M + a(i)*cos(i*w*t) + b(i)*sin(i*w*t);
    end
    %% 
    
%     最终结果

    f =M+a0/2; % 


    % figure
    % plot(x/1e6,y);
    % hold on
    % plot(t/1e6,f);
    % title('滤波器群时延')
    % xlabel('频率/MHz');
    % ylabel('群时延/ns');
    % xlim([-10,10]);
    % legend("原函数","傅里叶拟合函数");
    % rmse = sqrt(mean((y-f).^2));
    % sqrt(mean((y-f).^2))
end
